package com.hehe.conversion.hehemiddleware.model.resp.bill;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.util.List;

@Data
public class AirDetails {
    @JsonProperty("user_name")
    private String userName; // 旅客姓名

    @JsonProperty("user_id")
    private String userId; // 身份证号

    @JsonProperty("number")
    private String number; // 电子客票号码

    @JsonProperty("check_code")
    private String checkCode; // 验证码

    @JsonProperty("date")
    private String date; // 填开日期

    @JsonProperty("agentcode")
    private String agentcode; // 销售单位代号

    @JsonProperty("issue_by")
    private String issueBy; // 填开单位

    @JsonProperty("fare")
    private String fare; // 票价

    @JsonProperty("tax")
    private String tax; // 税费

    @JsonProperty("fuel_surcharge")
    private String fuelSurcharge; // 燃油附加费

    @JsonProperty("caac_development_fund")
    private String caacDevelopmentFund; // 民航发展基金

    @JsonProperty("insurance")
    private String insurance; // 保险费

    @JsonProperty("total")
    private String total; // 总额

    @JsonProperty("flights")
    private List<FlightInfo> flights; // 航班信息

    @JsonProperty("kind")
    private String kind; // 发票消费类型

    @JsonProperty("international_flag")
    private String internationalFlag; // 国内国际标签

    @JsonProperty("print_number")
    private String printNumber; // 印刷序号

    @JsonProperty("endorsement")
    private String endorsement; // 签注

    @JsonProperty("title")
    private String title; // 标题

    @JsonProperty("electronic_mark")
    private String electronicMark; // 电子票标记（仅在电子票时返回）

    @JsonProperty("voucher_mark")
    private String voucherMark; // 电子凭证标记（仅在电子票时返回）

    @JsonProperty("issuing_status")
    private String issuingStatus; // 出票状态（仅在电子票时返回）

    @JsonProperty("qrcode")
    private String qrcode; // 二维码（仅在电子票时返回）

    @JsonProperty("receipt_number")
    private String receiptNumber; // 收据号码（仅在电子票时返回）

    @JsonProperty("number_of_gp_order")
    private String numberOfGpOrder; // GP订单号

    @JsonProperty("prompt_information")
    private String promptInformation; // 提示信息（仅在电子票时返回）

    @JsonProperty("other_taxes")
    private String otherTaxes; // 其他税费（仅在电子票时返回）

    @JsonProperty("buyer")
    private String buyer; // 购买方名称（仅在电子票时返回）

    @JsonProperty("seller")
    private String seller; // 销售方名称（仅在电子票时返回）

    @JsonProperty("buyer_tax_id")
    private String buyerTaxId; // 购买方纳税人识别号（仅在电子票时返回）

    @JsonProperty("tax_rate")
    private String taxRate; // 增值税税率（仅在电子票时返回）

    @JsonProperty("type_of_business")
    private String typeOfBusiness; // 商务类型 售 或 退

    // 航班信息内部类
    @Data
    public static class FlightInfo {
        @JsonProperty("from")
        private String from; // 出发站

        @JsonProperty("to")
        private String to; // 到达站

        @JsonProperty("class_name")
        private String className; // 舱位等级

        @JsonProperty("flight_number")
        private String flightNumber; // 航班号

        @JsonProperty("date")
        private String date; // 乘机日期

        @JsonProperty("time")
        private String time; // 乘机时间

        @JsonProperty("seat")
        private String seat; // 座位等级

        @JsonProperty("carrier")
        private String carrier; // 承运人

        @JsonProperty("allow")
        private String allow; // 免费行李

        @JsonProperty("fare_basis")
        private String fareBasis; // 客票级别

        @JsonProperty("not_valid_before")
        private String notValidBefore; // 客票生效日期

        @JsonProperty("not_valid_after")
        private String notValidAfter; // 有效截至日期

        @JsonProperty("flight_segment")
        private String flightSegment; // 航段序号
        // Getters and Setters
    }
}
